#include"serveur.h"



SOCKET CreationSocket(int domain, int type, int protocol)
{
	return socket(domain,type,protocol);
}


int Etablir_connection(SOCKET sock,const struct sockaddr* addr,socklen_t SockSersize)
{
	return bind(sock,addr,SockSersize);
}


int Mise_en_Ecoute(SOCKET sock)
{
	return listen(sock, 5);
}

SOCKET Acceptation_demande_de_Connection(SOCKET sock,struct sockaddr* addr,socklen_t*  Sockclisize )
{
	return accept(sock,addr, Sockclisize);
}


void Fermeture_de_la_Socket(SOCKET S)
{
	closesocket(S);
}


void ReceptionDeMessage(SOCKET sock,void* texte,int taille,int *erreur)
	
{
	*erreur=recv(sock, texte, taille, 0);
}



void EnvoiDeMessage(SOCKET sock,void* texte,int taille,int *erreur)
{
	*erreur=send(sock,texte,taille,0);
}

void envoiMessageAuClient(const Liste *liste,int Taille,SOCKET csock,char texte[])
{
	int sock_err;
	Liste L;/*on cree une liste de travaille*/
	L = *liste;
	
	while(L.adPremiere!=NULL)
	{
		/*envoi des messages*/
		if((L.adPremiere)->csock!=0)
		{
			printf("Envoide message a %d\n",(L.adPremiere)->csock);
	
			EnvoiDeMessage((L.adPremiere)->csock,texte, Taille,&sock_err);
	
			/*memset(texte, '\0', strlen(texte) - 1);*/
	
		}
							
		L.adPremiere=(L.adPremiere)->suivent;
	}
}
	



void* creationTreadClient(void* voidstruc)
{
	int sock_err;
	char nom[50] = "BALDE";
	Stread struc;
	struc =  *(Stread *)voidstruc;
	while(1)
	{
		ReceptionDeMessage(struc.csock,struc.texte,500,&sock_err);
		sauvegaurdeComunication(nom,struc.texte);
		/*if(sock_err != -1)
			printf("Recu : %s\n", texte);*/
		/*EnvoiDeMessage(struc.csock,struc.texte, 500,&sock_err);*/
		envoiMessageAuClient(&(struc.l),500,struc.csock,struc.texte);
	}
return 0;	
}


